#pragma once
#include <map>
#include <string>
#include "locomotives.hpp"
#include "electric_motor.hpp"
#include "railroad_car.hpp"
/*
 * 设计库，用来存储车厢、马达等的技术参数信息
 * 由于机车可能每个和每个都不一样，因此机车的相关参数暂时不在此存储。
 */
class TechSpecificationLibrary {
    // 不同型号电动机的技术参数
    std::map<std::string,ElectricMotorProperty*> electricMotorProperties;
    // 不同型号车厢的技术参数
    std::map<std::string, RailroadCarProperty*> railroadCarProperties;
    // 不同型号机车的技术参数
    std::map<std::string, LocomotiveProperty*> locomotiveProperties;
public:
    TechSpecificationLibrary();
    // 根据名称获取电动机的技术参数，若不存在则返回nullptr
    ElectricMotorProperty *getElectricMotorProperty(std::string motorName);
    // 根据名称获取车厢的技术参数，若不存在则返回nullptr
    RailroadCarProperty *getRailroadCarProperty(std::string railroadCarName);
    // 根据名称获取机车的技术参数，若不存在则返回nullptr
    LocomotiveProperty *getLocomotiveProperty(std::string locomotiveName);
};
